package com.ruoyi.common.core.controller;

import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.dto.RoleDTO;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.enums.DataScopeType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;

/**
 * web层通用数据处理
 *
 * @author Lion Li
 */
public class BaseController {


    public String getCustomAuth(){
        String a = null;
        if (!LoginHelper.isAdmin()){
            LoginUser currentUser = LoginHelper.getLoginUser();
            for (RoleDTO role : currentUser.getRoles()) {
                DataScopeType type = DataScopeType.findCode(role.getDataScope());
                if (ObjectUtil.isNull(type)) {
                    throw new ServiceException("角色数据范围异常 => " + role.getDataScope());
                }
                // 全部数据权限直接返回
                if (type == DataScopeType.ALL) {
                    break;
                }
                String code = type.getCode();
                if (code.equals("5")){
                    //仅本人数据权限
                     a = " ( ac.user_id = "+ currentUser.getUserId() +" or "
                        +"yi.user_id = "+ currentUser.getUserId() +" ) ";
                }else if (code.equals("3")){
                    //部门数据权限 #deptName} = #{#user.deptId
                    a = " ( acu.dept_id = "+ currentUser.getDeptId() +" or "
                        +"yiu.dept_id = "+ currentUser.getDeptId() +" ) ";
                }else {
                    a = " 1=0 ";
                }
            }
        }
        return  null;
    }

    /**
     * 响应返回结果
     *
     * @param rows 影响行数
     * @return 操作结果
     */
    protected R<Void> toAjax(int rows) {
        return rows > 0 ? R.ok() : R.fail();
    }

    /**
     * 响应返回结果
     *
     * @param result 结果
     * @return 操作结果
     */
    protected R<Void> toAjax(boolean result) {
        return result ? R.ok() : R.fail();
    }

    /**
     * 页面跳转
     */
    public String redirect(String url) {
        return StringUtils.format("redirect:{}", url);
    }

    /**
     * 获取用户缓存信息
     */
    public LoginUser getLoginUser() {
        return LoginHelper.getLoginUser();
    }

    /**
     * 获取登录用户id
     */
    public Long getUserId() {
        return LoginHelper.getUserId();
    }

    /**
     * 获取登录部门id
     */
    public Long getDeptId() {
        return LoginHelper.getDeptId();
    }

    /**
     * 获取登录用户名
     */
    public String getUsername() {
        return LoginHelper.getUsername();
    }
}
